﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace CrushGame
{
    public interface IBasicInterface
    {
        //Property Fields
        Vector2 Location
        {
            get;
            set;
        }
        Texture2D Sprite
        {
            get;
        }
        Vector2 Velocity
        {
            get;
            set;
        }

        CollisionObject2D Hitbox
        {
            get;
        }

        /// <summary>
        /// Loads this object's sprite
        /// </summary>
        /// <param name="Content">The Content Manager to load the object's assets through</param>
        /// <param name="OverrideImage">If a non-standard sprite for this object-type is needed, specify asset name here</param>
        void ContentInitialize(ContentManager Content, string OverrideImage = "");

        /// <summary>
        /// Updates the Object
        /// </summary>
        /// <param name="DeltaTime">Time elapsed since last frame</param>
        void Update(float DeltaTime);

        /// <summary>
        /// Shuts down and cleans up components or connections
        /// </summary>
        void Shutdown();

        /// <summary>
        /// </summary>

        /// <summary>
        /// Draw the object to the screen
        /// </summary>
        /// <param name="Batch">The batch to use to draw</param>
        void Draw(SpriteBatch Batch);
    }
}
